const path = require('path');
const compressionPlugin = require('compression-webpack-plugin');

/**
 * 解析目录的地址
 * @param {String} dir 目录地址
 */
function resolve(dir) {
  return path.join(__dirname, dir)
}

module.exports = {
  runtimeCompiler: true,

  configureWebpack: config => {
    if (process.env.NODE_ENV == 'production') {
      return {
        // 启用静态资源压缩(gzip)
        plugins: [
          new compressionPlugin({
            // 需要压缩的文件规则
            test: /\.js$|\.html$|\.css/,

            // 启用压缩的文件大小（单位：字节）
            threshold: 100,

            // 是否删除原始文件
            deleteOriginalAssets: false
          })
        ]
      };
    }
  },

  // webpack配置链
  chainWebpack: config => {
    // 添加解析规则
    config.resolve.alias.store.set('~', resolve('src'));

    // 获取vue规则
    let vueRule = config.module.rule('vue');

    // 向vue规则中追加iview加载器
    vueRule.use('iview-loader').loader('iview-loader').options({
      prefix: false
    });
  },

  devServer: {
    // 解析代理设置
    proxy: {
      '/api': {
        target: 'http://127.0.0.1:7000'
      },
      '/home': {
        target: 'http://127.0.0.1:7000'
      }
    }
  },
  outputDir: '../web/wwwroot/vue',
  publicPath: '',
  lintOnSave: false,
  productionSourceMap: true
}